# This is a BitKeeper generated patch for the following project: # Project Name: Linux kernel tree # This patch format is intended for GNU patch command version 2.5 or higher. # This patch includes the following deltas: # ChangeSet 1.1305.9.2 -> 1.1305.9.3 # drivers/serial/acpi.c 1.1 -> (deleted) # drivers/serial/Makefile 1.16 -> 1.17 # # The following is the BitKeeper ChangeSet Log # -------------------------------------------- # 03/06/14 vojtech@kernel.bkbits.net 1.1305.10.3 # Merge # -------------------------------------------- # 03/06/17 davidm@tiger.hpl.hp.com 1.1305.9.3 # Fix serial HCDP and ACPI support for serial driver. # -------------------------------------------- # diff -Nru a/drivers/serial/Makefile b/drivers/serial/Makefile --- a/drivers/serial/Makefile Thu Jun 19 00:45:36 2003 +++ b/drivers/serial/Makefile Thu Jun 19 00:45:36 2003 @@ -8,8 +8,8 @@ serial-8250-$(CONFIG_GSC) += 8250_gsc.o serial-8250-$(CONFIG_PCI) += 8250_pci.o serial-8250-$(CONFIG_PNP) += 8250_pnp.o -serial-8250-$(CONFIG_SERIAL_HCDP) += 8250_hcdp.o -serial-8250-$(CONFIG_ACPI) += acpi.o +serial-8250-$(CONFIG_SERIAL_8250_HCDP) += 8250_hcdp.o +serial-8250-$(CONFIG_ACPI) += 8250_acpi.o obj-$(CONFIG_SERIAL_CORE) += core.o obj-$(CONFIG_SERIAL_21285) += 21285.o diff -Nru a/drivers/serial/acpi.c b/drivers/serial/acpi.c --- a/drivers/serial/acpi.c Thu Jun 19 00:45:36 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,109 +0,0 @@ -/* - * serial/acpi.c - * Copyright (c) 2002-2003 Matthew Wilcox for Hewlett-Packard - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - */ - -#include -#include -#include -#include - -#include - -#include -#include - -static void acpi_serial_address(struct serial_struct *req, struct acpi_resource_address32 *addr32) -{ - unsigned long size; - - size = addr32->max_address_range - addr32->min_address_range + 1; - req->iomap_base = addr32->min_address_range; - req->iomem_base = ioremap(req->iomap_base, size); - req->io_type = SERIAL_IO_MEM; -} - -static void acpi_serial_irq(struct serial_struct *req, struct acpi_resource_ext_irq *ext_irq) -{ - if (ext_irq->number_of_interrupts > 0) { -#ifdef CONFIG_IA64 - req->irq = acpi_register_irq(ext_irq->interrupts[0], - ext_irq->active_high_low, ext_irq->edge_level); -#else - req->irq = ext_irq->interrupts[0]; -#endif - } -} - -static int acpi_serial_add(struct acpi_device *device) -{ - acpi_status result; - struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL }; - struct serial_struct serial_req; - int line, offset = 0; - - memset(&serial_req, 0, sizeof(serial_req)); - result = acpi_get_current_resources(device->handle, &buffer); - if (ACPI_FAILURE(result)) { - result = -ENODEV; - goto out; - } - - while (offset <= buffer.length) { - struct acpi_resource *res = buffer.pointer + offset; - if (res->length == 0) - break; - offset += res->length; - if (res->id == ACPI_RSTYPE_ADDRESS32) { - acpi_serial_address(&serial_req, &res->data.address32); - } else if (res->id == ACPI_RSTYPE_EXT_IRQ) { - acpi_serial_irq(&serial_req, &res->data.extended_irq); - } - } - - serial_req.baud_base = BASE_BAUD; - serial_req.flags = ASYNC_SKIP_TEST|ASYNC_BOOT_AUTOCONF|ASYNC_AUTO_IRQ; - - result = 0; - line = register_serial(&serial_req); - if (line < 0) - result = -ENODEV; - - out: - acpi_os_free(buffer.pointer); - return result; -} - -static int acpi_serial_remove(struct acpi_device *device, int type) -{ - return 0; -} - -static struct acpi_driver acpi_serial_driver = { - .name = "serial", - .class = "", - .ids = "PNP0501", - .ops = { - .add = acpi_serial_add, - .remove = acpi_serial_remove, - }, -}; - -static int __init acpi_serial_init(void) -{ - acpi_bus_register_driver(&acpi_serial_driver); - return 0; -} - -static void __exit acpi_serial_exit(void) -{ - acpi_bus_unregister_driver(&acpi_serial_driver); -} - -module_init(acpi_serial_init); -module_exit(acpi_serial_exit);